@CLASS
pfValidatorsTests

@USE
pf/tests/pfTestCase.p

@BASE
pfTestCase

@create[aTestName]
  ^BASE:create[$aTestName]

@setUp[]
  ^use[pf/types/pfValidate.p]

@alphaNumericTest[]
  ^pfAssert:isFalse(^pfValidate:isAlphaNumeric[])[isAlphaNumeric пустая строка]
  ^pfAssert:isTrue(^pfValidate:isAlphaNumeric[wш897_])[isAlphaNumeric положительная.]
  ^pfAssert:isFalse(^pfValidate:isAlphaNumeric[wш897_*])[isAlphaNumeric отрицательная.]

@slugTest[]
  ^pfAssert:isFalse(^pfValidate:isSlug[])[isSlug пустая строка]
  ^pfAssert:isTrue(^pfValidate:isSlug[wш897_-])[isSlug положительная.]
  ^pfAssert:isFalse(^pfValidate:isSlug[wш897_-*])[isSlug отрицательная.]

@lowerCaseTest[]
  ^pfAssert:isFalse(^pfValidate:isLowerCase[])[isLowerCase пустая строка]
  ^pfAssert:isTrue(^pfValidate:isLowerCase[wш897_-])[isLowerCase положительная.]
  ^pfAssert:isFalse(^pfValidate:isLowerCase[wFG897_-*])[isLowerCase отрицательная.]

@upperCaseTest[]
  ^pfAssert:isFalse(^pfValidate:isUpperCase[])[isUpperCase пустая строка]
  ^pfAssert:isTrue(^pfValidate:isUpperCase[FWEFWEВСВЫ897_-])[isUpperCase положительная.]
  ^pfAssert:isFalse(^pfValidate:isUpperCase[wFG897_-*])[isUpperCase отрицательная.]

@emptyTest[]
  ^pfAssert:isTrue(^pfValidate:isEmpty[   	
])[isEmpty положительная.]
  ^pfAssert:isFalse(^pfValidate:isEmpty[   *])[isEmpty отрицательная.]

@notEmptyTest[]
  ^pfAssert:isFalse(^pfValidate:isNotEmpty[   	
])[isNotEmpty положительная.]
  ^pfAssert:isTrue(^pfValidate:isNotEmpty[   *])[isNotEmpty отрицательная.]

@ipTest[]
  ^pfAssert:isFalse(^pfValidate:isValidIPV4Address[])[isValidIPV4Address пустая строка]

  ^pfAssert:isTrue(^pfValidate:isValidIPV4Address[217.117.112.46])[217.117.112.46]
  ^pfAssert:isTrue(^pfValidate:isValidIPV4Address[10.10.1.6])[10.10.1.6]

  ^pfAssert:isFalse(^pfValidate:isValidIPV4Address[5f.10.1.6])[5f.10.1.6]
  ^pfAssert:isFalse(^pfValidate:isValidIPV4Address[340.10.1.6])[5f.10.1.6]

@emailTest[]
  ^pfAssert:isFalse(^pfValidate:isValidEmail[])[isValidEmail пустая строка]
  ^pfAssert:isTrue(^pfValidate:isValidEmail[oleg@proc.ru])[oleg@proc.ru] 
  ^pfAssert:isTrue(^pfValidate:isValidEmail[oleg.volchkov@proc-mail.mos.ru])[oleg.volchkov@proc-mail.mos.ru] 

@onlyLettersTest[]
  ^pfAssert:isFalse(^pfValidate:isOnlyLetters[])[isOnlyLetters пустая строка]
  ^pfAssert:isTrue(^pfValidate:isOnlyLetters[ofjrлЫацуаыDdewTER])[isOnlyLetters положительная]
  ^pfAssert:isFalse(^pfValidate:isOnlyLetters[ofjrлЫацуаы3 _*#DdewTER])[isOnlyLetters отрицательная]

@onlyDigitsTest[]
  ^pfAssert:isFalse(^pfValidate:isOnlyDigits[])[isOnlyDigits пустая строка]
  ^pfAssert:isTrue(^pfValidate:isOnlyDigits[75028436209875230497520987])[isOnlyDigits положительная]
  ^pfAssert:isFalse(^pfValidate:isOnlyDigits[47023982098f023184702])[isOnlyDigits отрицательная]

@hexDecimalTest[]
  ^pfAssert:isFalse(^pfValidate:isHEXDecimal[])[isHEXDecimal пустая строка]
  ^pfAssert:isTrue(^pfValidate:isHEXDecimal[14af8cf9723454])[isHEXDecimal положительная]
  ^pfAssert:isFalse(^pfValidate:isHEXDecimal[14af8cf97234542])[isHEXDecimal отрицательная 1]
  ^pfAssert:isFalse(^pfValidate:isHEXDecimal[14af8cf97234542g])[isHEXDecimal отрицательная 2]

@decimalTest[]
  ^pfAssert:isFalse(^pfValidate:isValidDecimal[])[isValidDecimal пустая строка]
  ^pfAssert:isTrue(^pfValidate:isValidDecimal[-1234567890.23])[isValidDecimal положительная]
  ^pfAssert:isFalse(^pfValidate:isValidDecimal[14af8cf97234542])[isValidDecimal отрицательная 1]
  ^pfAssert:isFalse(^pfValidate:isValidDecimal[2.o345223])[isValidDecimal отрицательная 2]

@urlTest[]
  ^pfAssert:isFalse(^pfValidate:isValidURL[])[isValidURL пустая строка]

  ^pfAssert:isTrue(^pfValidate:isValidURL[https://info:fj34fjmlasdffnasjfs@oleg-iv.proc.ru:564/path/to/point])[isValidURL положительная]
  ^pfAssert:isTrue(^pfValidate:isValidURL[https://www.proc.ru/])[isValidURL положительная]

  ^pfAssert:isFalse(^pfValidate:isValidURL[https://info:fj34fjmlasdffnasjfs@oleg_iv.proc.ru:564/path/to/point])[isValidURL отрицательная]
  ^pfAssert:isTrue(^pfValidate:isValidURL[http://info:fj34fjmlasdffnasjfs@oleg-iv.proc.ru:564/path/to/point](true))[isValidURL[onlyHTTP] положительная]
  ^pfAssert:isFalse(^pfValidate:isValidURL[https://info:fj34fjmlasdffnasjfs@oleg-iv.proc.ru:564/path/to/point](true))[isValidURL[onlyHTTP] отрицательная]

@existingURLTest[]
  ^pfAssert:isFalse(^pfValidate:isExistingURL[])[isExistingURL пустая строка]
  ^pfAssert:isTrue(^pfValidate:isExistingURL[http://www.proc.ru/])[isExistingURL положительная]
  ^pfAssert:isFalse(^pfValidate:isExistingURL[http://non-existent.proc.ru/internet])[isExistingURL отрицательная]
  
@wellFormedXMLTest[]
  ^pfAssert:isFalse(^pfValidate:isWellFormedXML[])[isWellFromedXML пустая строка]
  ^pfAssert:isTrue(^pfValidate:isWellFormedXML[
    <document>
      <node attr="value">Node value</node>
    </document>
  ])[isWellFromedXML положительная]
  ^pfAssert:isFalse(^pfValidate:isWellFormedXML[
    <document>
      <node attr="value">Node value</node>
      <node>Error<node>
    </document>
  ])[isWellFromedXML отрицательная]

@wellFormedXMLFragmentTest[]
  ^pfAssert:isFalse(^pfValidate:isWellFormedXMLFragment[])[isWellFromedXMLFragment пустая строка]
  ^pfAssert:isTrue(^pfValidate:isWellFormedXMLFragment[
      <node attr="value">Node value</node>
      <node attr="value">Node value</node>
      <node attr="value">Node value</node>
      <node attr="value">Node value</node>
  ])[isWellFromedXMLFragment положительная]

  ^pfAssert:isFalse(^pfValidate:isWellFormedXMLFragment[
      <node attr="value">Node value</node>
      <node>Error<node>
  ])[isWellFromedXMLFragment отрицательная]

@ansiDateTimeTest[]
  ^pfAssert:isFalse(^pfValidate:isValidANSIDatetime[])[isValidANSIDatetime пустая строка]

  ^pfAssert:isTrue(^pfValidate:isValidANSIDatetime[2007-12-13 14:45])[isValidANSIDatetime позитивная 1]
